﻿Ext.define('DesRec', {
    extend: 'ABMBase',
    Title: 'Formulario ABM Descuentos y Recargos',
    Model: 'Model.DesRec',
    defaultPropertySort: 'id_desrec',
    storeLista: CreateForeignStore('storeLista', 'Model.Lista'),
    storeEntidad: CreateFirstEmptyStore('storeEntidad', 'Model.Proveedores'),
    storeRubro: CreateFirstEmptyStore('storeRubro', 'Model.Rubro'),
    storeCategArticulos: CreateFirstEmptyStore('storeCategArticulos', 'Model.CategArticulos'),
    storeArticulos: CreateFirstEmptyStore('storeArticulos', 'Model.Articulos'),
    listeners: {
        Creando: function (rcd) {
            rcd.record.set('id_desrec', activeInstance.GetNum('DESREC'));
            rcd.record.set('id_entidad', activeInstance.EjecutarEnServidor('ObtenerEntidadOperador'));
        },
        Actualizando: function (rcd) {
            if (Ext.isEmpty(rcd.record.get('id_entidad')) &&
                        Ext.isEmpty(rcd.record.get('id_rubro')) &&
                        Ext.isEmpty(rcd.record.get('id_categ_art')) &&
                        Ext.isEmpty(rcd.record.get('id_articulo'))) {
                ShowError('Al menos debe seleccionarse una condición para el descuento/recargo.');
                return false;
            }
        }
    },
    WindowPanel: [{
        xtype: 'container',
        frame: true,
        layout: 'column',
        items: [{
            xtype: 'fieldset',
            columnWidth: 0.5,
            border: false,
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Identificador',
                name: 'id_desrec',
                maxLength: 10,
                isPrimaryKey: true,
                enforceMaxLength: true,
                allowBlank: false
            }, {
                xtype: 'combobox',
                fieldLabel: 'Lista de Precios',
                queryMode: 'local',
                displayField: 'nombre',
                valueField: 'id_lista',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeLista'),
                allowBlank: false,
                name: 'id_lista'
            }, {
                xtype: 'combobox',
                id: 'cbEntidadComercio',
                fieldLabel: 'Entidad Comercio',
                queryMode: 'local',
                displayField: 'nombre',
                valueField: 'id_entidad',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeEntidad'),
                allowBlank: true,
                readOnly: true,
                name: 'id_entidad'
            }, {
                xtype: 'combobox',
                id: 'cbRubro',
                fieldLabel: 'Rubro',
                queryMode: 'local',
                displayField: 'descripcion',
                valueField: 'id_rubro',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeRubro'),
                allowBlank: true,
                name: 'id_rubro'
            }, {
                xtype: 'combobox',
                id: 'cbCategArt',
                fieldLabel: 'Categoría de Artículo',
                queryMode: 'local',
                displayField: 'descripcion',
                valueField: 'id_categ_art',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeCategArticulos'),
                allowBlank: true,
                name: 'id_categ_art'
            }, {
                xtype: 'combobox',
                id: 'cbArticulo',
                fieldLabel: 'Artículo',
                queryMode: 'local',
                displayField: 'descripcion',
                valueField: 'id_articulo',
                editable: true,
                forceSelection: true,
                store: Ext.StoreMgr.get('storeArticulos'),
                allowBlank: true,
                name: 'id_articulo'
            }]
        }, {
            xtype: 'fieldset',
            columnWidth: 0.5,
            border: false,
            items: [{
                xtype: 'numberfield',
                name: 'porcentaje',
                fieldLabel: 'Porcentaje',
                allowBlank: true,
                value: 0,
                maxValue: 100,
                minValue: 0
            }, {
                xtype: 'radiofield',
                fieldLabel: 'Descuento',
                allowBlank: true,
                name: 'signo',
                inputValue: '-1'
            }, {
                xtype: 'radiofield',
                fieldLabel: 'Recargo',
                allowBlank: true,
                name: 'signo',
                inputValue: '1'
            }, {
                xtype: 'numberfield',
                name: 'orden_aplica',
                fieldLabel: 'Orden de Aplicación',
                allowBlank: true,
                value: 0,
                maxValue: 100,
                minValue: 0
            }]
        }]
    }],
    Columns: [
            { text: 'Identificador', dataIndex: 'id_desrec', filter: true },
        {
            header: 'Lista de Precios',
            dataIndex: 'id_lista',
            filter: CreateListFilter('nombre', 'id_lista', 'storeLista'),
            renderer: ForeignStoreRenderer('storeLista', 'nombre')
        }, {
            header: 'Entidad',
            dataIndex: 'id_entidad',
            filter: CreateListFilter('nombre', 'id_entidad', 'storeEntidad'),
            renderer: ForeignStoreRenderer('storeEntidad', 'nombre')
        }, {
            header: 'Rubro',
            dataIndex: 'id_rubro',
            filter: CreateListFilter('descripcion', 'id_rubro', 'storeRubro'),
            renderer: ForeignStoreRenderer('storeRubro', 'descripcion')
        }, {
            header: 'Categoria Articulo',
            dataIndex: 'id_categ_art',
            filter: CreateListFilter('descripcion', 'id_categ_art', 'storeCategArticulos'),
            renderer: ForeignStoreRenderer('storeCategArticulos', 'descripcion')
        }, {
            header: 'Articulo',
            dataIndex: 'id_articulo',
            filter: CreateListFilter('descripcion', 'id_articulo', 'storeArticulos'),
            renderer: ForeignStoreRenderer('storeArticulos', 'descripcion')
        },
            { text: 'Porcentaje', dataIndex: 'porcentaje', filter: true },
            {
                text: 'Signo',
                dataIndex: 'signo',
                filter: true,
                renderer: function (val) {
                    if (val < 0)
                        return '-';
                    else
                        return '+';
                }
            },
            { text: 'Orden de Aplicación', dataIndex: 'orden_aplica', filter: true }
        ]
});
